There are advantages to be gained by delivering entertainment services to airline passengers, passengers aboard trains and cruise ships, and hotel guests. Passengers onboard airplanes and trains often have to spend many hours in their seats with little or nothing to do. Hotels and cruise ships tend to offer more activities, but guests often have a difficult time trying to entertain their children (and sometimes themselves)—especially in the evenings and early mornings when most hotel services are closed. Hotels, airlines, train operators and cruise ship operators have long understood that having a relatively captive audience provides a number of business opportunities but also imposes responsibilities to provide their guests with entertainment and amenities to keep them occupied and happy.
Several decades ago, airlines began providing in flight entertainment such as movies, television reruns and news. The airlines have found that their customers are happier when they are kept occupied and interested during long flights. By creating a more satisfying in-flight experience, passengers are happier and less likely to be irritable or cause problems. By providing such in-flight entertainment to their passengers, the airlines receive several benefits and their passengers have also significantly benefited.
As technology has advanced, increasingly more powerful computing devices are now able to be cost-effectively installed within smaller and smaller packages. This has allowed some airlines to deploy relatively sophisticated seat-back controllers and display units within the seat backs and/or armrests of newer jet airplanes. Many transcontinental aircraft now have color liquid crystal displays at each passenger seat. These individual seat-back or arm-rest displays can allow each passenger to have an individual choice of several different movies or other entertainment programs.
To take advantage of such individual color displays on airlines, trains and other environments, Nintendo some time ago launched a series of product offerings that allowed people to play video games. Details of such arrangements may be found, for example, in U.S. Pat. No. 5,581,270 to Smith et al and U.S. Pat. No. 5,959,596 to McCarten et al. These arrangements have been successful, but further improvements are possible.
One area of possible improvement relates to the ability to do without specialized game playing hardware while nevertheless offering people a full range of interesting video game experiences over a more generic network. Airlines, cruise ships, hotels, trains, cable operators, satellite television operators, and the like may be reluctant to deploy specialized video game playing hardware components. Rather, they may be interested in providing a general-purpose infrastructure that enables a wide range of different applications—e.g., everything from stock market trading to web surfing to mass media displays including but not limited to playing video games. While a prior approach has been to use specialized video game playing hardware technology to provide a wider range of applications beyond video games, there are potential problems with reliability and cost that makes it attractive in some environments to install a purely generic networked computing environment, and to adapt that network by using software for playing video games.
As the computing power of airline seat back controllers, set top boxes and other more general purpose equipment has increased, we have found that it is now possible to develop a video game playing network that is based on emulating special-purpose video game playing platforms using software running on more general-purpose networked computing platforms.
As one particular example, Nintendo's GAME BOY® hand-held video game platforms have been extraordinarily successful. Nintendo released the first GAME BOY® in the late 1980s. Since then, this product and its successors (GAME BOY COLOR® and GAME BOY ADVANCE®) have captured the imaginations of millions of video game players throughout the world. A wide number of different software applications (including but not limited to video games) have been designed to run on these platforms. People throughout the world enjoy these applications every day. One can see them being used on subways, at sports arenas, after school, and in a number of other contexts. See FIG. 1A.
Nintendo's GAME BOY®, GAME BOY COLOR® and GAME BOY ADVANCE® are examples of platforms having specialized hardware that is optimized for low cost, excellent performance and good graphics. These devices are not really general purpose computers; rather, they are special-purpose devices with specialized capabilities particularly adapted to video game play. These special capabilities provide low cost and exciting video game play action with good graphics and sound.
While GAME BOY® platforms are inexpensive and have long battery life, there may be situations (as described above) in which it would be desirable to play or use applications developed for GAME BOY® on other, more general purpose platforms. For example, an airline, train or other vehicle passenger might want to play video games during a long journey. As shown in FIG. 1B, airlines are installing general purpose computer-based seat-back computer displays into the backs of airline seats and/or into armrests of airline seats. Trains, buses and other mass transport vehicles are expected to do the same. Such seat-back/armrest displays may provide a low cost personal computer including a processor, random access memory, liquid crystal display and input device(s). Similar displays could be installed in other vehicles (e.g., ships, vans, cars, etc.) or in other contexts (e.g., at walk-up kiosks, within hotel rooms, etc.). It would be desirable under certain circumstances to allow users to execute all sorts of different applications including GAME BOY® video games and other applications using the general-purpose computer capabilities of such seat-back or similar display devices.
Personal computers have also proliferated throughout the world and are now available at relatively low cost. A trend has shifted some entertainment from the home television set to the home personal computer, where children and adults can view interesting web pages and play downloaded video games and other applications. In some circumstances, it may be desirable to allow users to play GAME BOY® video games on-their home personal computers (see FIG. 1C).
A wide variety of so-called personal digital assistants (PDA's) and “pocket PCs” have become available in recent years. Such devices now comprise an entire miniature computer within a package small enough to fit into your pocket. Mobile cellular telephones are also becoming increasingly computationally-intensive and have better displays so they can access the World Wide Web and perform a variety of downloaded applications. Similarly, there are now satellite television receivers, cable set top boxes, and other general purpose computing-capable devices deployed throughout the U.S. In some circumstances, it may be desirable to enable people to play GAME BOY® video games and other GAME BOY® applications on a personal digital assistant, cellular telephone, set top-boxes or other such devices (see FIG. 1D).
The special-purpose sound and graphics circuitry provided by the GAME BOY® platforms is not generally found in the various other platforms shown in FIGS. 1B, 1C and 1D. Providing these missing capabilities is one of the challenges to running a GAME BOY® video game (or other GAME BOY® application) on these other target platforms.
Another challenge relates to instruction set compatibility. Nintendo's GAME BOY® platform is based on an older, relatively inexpensive microprocessor (the Zilog Z80) that is no longer being used in most modem general purpose computer systems such as personal computers, seat-back displays, set top boxes, and personal digital assistants. The Z80 instruction set (the language in which all GAME BOY® games and other GAME BOY® applications are written in) is not directly understood by the more modern Intel microprocessors (e.g., the 8086, 80286, 80386, Pentium and other processors in the Intel family) that are now widely used and found in most personal computers, seat-back displays, personal digital assistants, and the like. We have found that it is possible to “port” certain GAME BOY® games or other applications to different microprocessor families (e.g., by cross-compiling the source code to a different target microprocessor). Also, there is an advantage in certain contexts to being able to play or execute the same binary images stored in GAME BOY® cartridges on target platforms other than GAME BOY®.
One way to provide a cross-platform capability is to provide a GAME BOY® software emulator on the target platform. Generally, a software emulator is a computer program that executes on a desired target platform (e.g., a seat-back display device, a personal computer or a personal digital assistant shown in FIGS. 1B-1D) and uses software to supply native-platform capabilities that are missing from the target platform. For example, a software emulator may perform some or all of GAME BOY®'s specialized graphics functions in software, and may interface with whatever graphics resources are available on the target platform to display resulting images. A software emulator may translate or interpret Z80 instructions so the microprocessor of the target platform can perform the functions that GAME BOY® would perform if presented with the same instructions. The software emulator may include software code that emulates hardware capabilities within the GAME BOY® circuitry (e.g., audio and/or graphics processing) and/or translate associated GAME BOY® application requests into requests that can be handled by the hardware resources available on the target platform. For example, the target platform may include a graphics adapter and associated display that is incompatible with GAME BOY®'s graphics hardware but which can perform some of the basic graphics functions required to display GAME BOY® graphics on a display.
A number of video game emulators have been written for a variety of different platforms ranging from personal digital assistants to personal computers. However, these have not been adapted to airlines, hotels and other such environments. Therefore, further improvements are possible and desirable.
The present invention solves these and other problems by providing a unique software emulator-based networked video game playing system capable of providing acceptable speed performance and good image and sound quality on even a low-capability target platform such as a seat back display or set top box for example. The preferred embodiment software emulator provided by this invention maintains high-quality graphics and sound in real time across a wide variety of video games and other applications—and nearly duplicates the graphics and sound that would be experienced by a user of the GAME BOY®, GAME BOY COLOR® and/or GAME BOY ADVANCE® platform running the same game or other application.
In accordance with one aspect of an example illustrative embodiment, a software emulator is provided for a seat-back in-flight (or in-cruise, or in-room) computer entertainment system that controls the entertainment system to emulate a portable handheld (or other) game system. The emulation software may provide a number of capabilities that ensure an interesting and authentic game playing experience. The following are example features provided in accordance with aspects of the present invention:                adequate frame rate to provide authentic, enjoyable game play experiences,        color palette emulation at run time so as to reasonable represent original game colors,        adequate display resolution consistent with original handheld game play platform,        synchronized sound and video,        realistic emulated sound that reasonably represents original game sound,        emulated authentication and logo screen display,        interactive real time response to user-manipulated controls,        for airline use, automatic game play pause,        automatic decryption of encrypted executables,        on-the-fly interpreted code replacement to replace certain instructions with other instructions or blocks of instructions based on a pre-defined scripting language or other mechanism,        for-engine software architecture including a core microprocessor emulation engine, a memory manager, a video manager and a sound emulator,        real time synchronization to game play events such as interrupts,        simulation of original platform memory including video memory image storage,        on-the-fly changing of VGA color palette to match original platform colors,        emulation of original platform memory paging,        real time sound synthesis in synchronization with game play, and        other advantageous features.        
The preferred embodiment emulator achieves this through a unique combination of features and optimizations including, for example:                use of a virtual liquid crystal display controller (state machine) to maintain real time synchronization with events as they would occur on the native platform,        use of a hardware-assisted bit BLIT memory transfer operation to efficiently transfer graphics information into video memory,        pre-computed translation table for translating native platform graphics character formats into formats more compatible with standard graphics adapters,        emulation of native platform color palette information to provide compatibility with games and other applications that change color palettes within a frame,        emulation of major registers and other hardware-based memory structures within the native platform in RAM under software control,        use of a jump table to efficiently parse incoming binary instruction formats,        use of a unique page table to control memory access by remapping memory access instructions into different memory locations and/or function calls,        availability of a ROM protection function to eliminate ROM overwriting during emulated operations,        responsive to video game compatibility modes and registration data,        models native platform using state machine defining search, transfer, horizontal blank and vertical blank states,        cycle counter to determine when a modeled state has expired and transition to a new state is desired,        selective frame display update skipping while maintaining execution of all instructions to maintain state information while minimizing game play slowdowns,        optional NOP loop look ahead feature to avoid wasting processing time in NOP loops,        redundant emulated RAM and ROM storage to optimize execution efficiency,        separate page tables for read and write operations,        modeling of native microprocessor registers as a union of byte, word and long register formats,        modeling native instruction CPU flags to allow efficient updating after operations are performed by target platform microprocessor,        mapping emulated program counter into target platform microprocessor general purpose register,        reads and writes via index register go through pointer tables to increase execution efficiency,        adaptable input controller emulator to provide user inputs from a variety of different user input devices,        emulated object attribute memory, and        use of screen memory buffers larger than screen size to increase paging efficiency by eliminating clipping calculations and using the hardware BitBlt to transfer a subset of the memory buffer to displayed video memory.        